package com.shm.shunfen;

import java.util.*;

/**
 * 分糖果
 * 时间限制： 3000MS
 * 内存限制： 786432KB
 * 题目描述：
 * 小贺有n个糖果，每个糖果都有一个颜色，颜色会用一个数字来表示。小贺恰好有m个糖果罐。他想要把这些糖果分配到糖果罐中，所有的糖果罐都是相同的，而相同颜色的糖果是不同的。某一些糖果罐中可以没有糖果。
 *
 * 由于小贺是一个强迫症，所以他希望在同一个罐子中的所有糖果的颜色都是不同的。
 *
 * 询问所有分配的方案数。
 *
 *
 *
 * 输入描述
 * 第一行两个数n,m(1≤n≤105,1≤m≤100)
 *
 * 第二行n个数ai(1≤ai≤106)，代表你需要分配的糖果的颜色。
 *
 * 输出描述
 * 一行一个数代表方案数对109+7取模后的结果。
 *
 *
 * 样例输入
 * 5 2
 * 1 2 2 3 3
 * 样例输出
 * 4
 *
 * 提示
 * 样例解释
 * 四种方案分别是：
 * {1,2,4},{3,5}
 * {1,3,4},{2,5}
 * {1,2,5},{3,4}
 * {1,3,5},{2,4}
 *
 * @author SHM
 */
public class Main {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        String s = input.nextLine();
        String[] ss = s.split(" ");
        int n  = Integer.parseInt(ss[0]);
        int m  = Integer.parseInt(ss[1]);
        String str = input.nextLine();
        String[] strs = str.split(" ");
        Set<String> set = new HashSet<>();
        for (String str1 : strs) {
            set.add(str1);
        }
        int size = set.size();
        HashMap<String, List<Integer>> map = new HashMap<>();
        for (int i = 0; i < strs.length; i++) {
            if (!map.containsKey(strs[i])){
                ArrayList<Integer> list = new ArrayList<>();
                list.add(i+1);
                map.put(strs[i],list);
            }else {
                map.get(strs[i]).add(i);
            }
        }

    }
}
